/*! \file WindowImpl.h
 *	\brief <write description for WindowImpl.h>
 *
 *	created:	2010/02/11
 *	created:	11:2:2010   5:20
 *	filename: 	c:\src\gag-engine\libs\app\WindowImpl.h
 *	file path:	c:\src\gag-engine\libs\app
 *	file base:	WindowImpl
 *	file ext:	h
 *	author:		Vitalii Trubchaninov
 *				venngraydog@gmail.com
 */

#ifndef _APP_WINDOWIMPL_H_
#define _APP_WINDOWIMPL_H_

#pragma once

#include "Window.h"

namespace tt{
namespace app{

class WindowImpl
{
public:
	WindowImpl();
	virtual ~WindowImpl();

	void setFullscreen(bool value);
	bool fullscreen() const;

	void create(const WindowBounds&);
	void show(WindowShowType);

	bool update();

	WindowBounds bounds() const;

protected:
	virtual void onCreate(const WindowBounds&) = 0;
	virtual void onShow(WindowShowType) = 0;
	virtual bool onUpdate() = 0;
	virtual WindowBounds onBounds() const = 0;

private:
	bool m_fullscreen;
};

} //namespace app
} //namespace tt

#include "WindowImpl.inl"

#endif //_APP_WINDOWIMPL_H_